Skip to content

Conversation

@ArgoZhang
Copy link
Member

@ArgoZhang ArgoZhang commented Mar 18, 2025

Link issues

fixes #5650

Summary By Copilot

This pull request includes significant updates to the MultiSelect and Select components, focusing on enhancing the search functionality and refactoring related code. Key changes include the addition of new parameters, updates to the rendering logic, and adjustments to the unit tests to reflect these updates.

Enhancements to Search Functionality:

Updates to MultiSelect Component:

Updates to Select Component:

Refactoring and Code Cleanup:

Unit Test Adjustments:

Regression?

  • Yes
  • No

Risk

  • High
  • Medium
  • Low

Verification

  • Manual (required)
  • Automated

Packaging changes reviewed?

  • Yes
  • No
  • N/A

☑️ Self Check before Merge

⚠️ Please check all items below before review. ⚠️

  • Doc is updated/provided or not needed
  • Demo is updated/provided or not needed
  • Merge the latest code from the main branch

Summary by Sourcery

Refactors the search functionality in the MultiSelect and Select components to improve usability and code maintainability. The changes include UI enhancements, code cleanup, and updates to unit tests.

Enhancements:

  • Refactors the search functionality in the MultiSelect and Select components.
  • Updates the rendering logic for search input and empty search results in MultiSelect and Select components.
  • Removes the SearchClassString property from MultiSelect and SelectGeneric components.
  • Updates the DropdownMenuClassString property to include search-related classes in MultiSelect, Select, and SelectBase components.
  • Adds the IsFixedSearch parameter to SelectBase component.
  • Removes the IsFixedSearch parameter from Select and SelectGeneric components.
  • Updates related methods to use new search logic in SelectGeneric component.
  • Updates tests to reflect changes in the search-related class names in SelectGenericTest component.
  • Adds new search-related UI elements and updates the layout to include toggles for ShowSearch and IsFixedSearch in MultiSelects sample component.
  • Introduces new boolean fields _isFixedSearch and _showSearch to manage the search behavior in MultiSelects sample component.
  • Moves the toolbar rendering logic inside the dropdown-menu-body div in MultiSelect component.
  • Adds a check for Rows.Count before rendering the dropdown-menu-body in MultiSelect component.
  • Removes the SearchClassString property and updates the DropdownMenuClassString property to include search-related classes in MultiSelect component.
  • Updates the search input rendering and empty search result handling in SelectGeneric component.
  • Removes the IsFixedSearch parameter and updates related methods to use new search logic in SelectGeneric component.
  • Updates the search input rendering in Select component.
  • Removes the IsFixedSearch parameter and updates the DropdownMenuClassString property to reflect the new search logic in Select component.
  • Adds the IsFixedSearch parameter and updates the DropdownMenuClassString property to handle fixed search scenarios in SelectBase component.
  • Updates the toolbar visibility test in MultiSelectTest component to check for toolbar visibility based on the presence of data.
  • Removes the SearchClassString property from MultiSelect component.
  • Updates the DropdownMenuClassString property to include search-related classes in MultiSelect component.
  • Updates the search input rendering in Select component.
  • Removes the IsFixedSearch parameter from Select component.
  • Updates the DropdownMenuClassString property to reflect the new search logic in Select component.
  • Adds the IsFixedSearch parameter to SelectBase component.
  • Updates the DropdownMenuClassString property to handle fixed search scenarios in SelectBase component.
  • Updates the toolbar visibility test in MultiSelectTest component to check for toolbar visibility based on the presence of data.
  • Removes the SearchClassString property from MultiSelect component.
  • Updates the DropdownMenuClassString property to include search-related classes in MultiSelect component.
  • Updates the search input rendering in Select component.
  • Removes the IsFixedSearch parameter from Select component.
  • Updates the DropdownMenuClassString property to reflect the new search logic in Select component.
  • Adds the IsFixedSearch parameter to SelectBase component.
  • Updates the DropdownMenuClassString property to handle fixed search scenarios in SelectBase component.
  • Updates the toolbar visibility test in MultiSelectTest component to check for toolbar visibility based on the presence of data.

@bb-auto bb-auto bot added the enhancement New feature or request label Mar 18, 2025
@sourcery-ai
Copy link
Contributor

sourcery-ai bot commented Mar 18, 2025

Reviewer's Guide by Sourcery

This pull request redesigns the IsFixedSearch function across multiple components (MultiSelect, Select, SelectGeneric) by introducing a new IsFixedSearch parameter in SelectBase, refactoring search-related properties, and updating rendering logic to handle the fixed search bar. Additionally, the pull request includes updates to the sample component and unit tests to reflect these changes.

Updated class diagram for SelectBase

classDiagram
  class SelectBase {
    +bool ShowSearch
    +bool IsFixedSearch
    +string SearchIcon
    +string NoDataTip
    +string NoSearchDataText
    +string DropdownMenuClassString
  }
Loading

Updated class diagram for Select

classDiagram
  class Select {
    -string DropdownMenuClassString
  }
Loading

File-Level Changes

Change Details Files
Introduced IsFixedSearch parameter to SelectBase to control the search bar's fixed position within the dropdown.
  • Added IsFixedSearch parameter to SelectBase.
  • Updated DropdownMenuClassString property in SelectBase to include is-fixed-search class when ShowSearch and IsFixedSearch are true.
src/BootstrapBlazor/Components/Select/SelectBase.cs
Refactored search-related properties and rendering logic in MultiSelect component.
  • Modified rendering logic to conditionally display search elements and handle empty search results.
  • Removed the SearchClassString property.
  • Updated the DropdownMenuClassString property to include search-related classes.
src/BootstrapBlazor/Components/Select/MultiSelect.razor
src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs
Updated search input rendering and handling of empty search results in Select and SelectGeneric components.
  • Adjusted the search input rendering.
  • Added handling for empty search results.
  • Removed the IsFixedSearch parameter.
src/BootstrapBlazor/Components/Select/Select.razor
src/BootstrapBlazor/Components/Select/Select.razor.cs
src/BootstrapBlazor/Components/SelectGeneric/SelectGeneric.razor
src/BootstrapBlazor/Components/SelectGeneric/SelectGeneric.razor.cs
Added UI elements and logic to control ShowSearch and IsFixedSearch in the MultiSelects sample component.
  • Added new search-related UI elements.
  • Updated the layout to include toggles for ShowSearch and IsFixedSearch.
  • Introduced new boolean fields _isFixedSearch and _showSearch to manage the search behavior.
src/BootstrapBlazor.Server/Components/Samples/MultiSelects.razor
src/BootstrapBlazor.Server/Components/Samples/MultiSelects.razor.cs
Adjusted unit tests to accommodate changes in search-related class names and toolbar visibility.
  • Added tests to verify the toolbar visibility based on the presence of data.
  • Updated tests to reflect changes in the search-related class names.
test/UnitTest/Components/MultiSelectTest.cs
test/UnitTest/Components/SelectGenericTest.cs

Assessment against linked issues

Issue Objective Addressed Explanation
#5650 Redesign the IsFixedSearch function in the MultiSelect component to be consistent with the Select component.

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!
  • Generate a plan of action for an issue: Comment @sourcery-ai plan on
    an issue to generate a plan of action for it.

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@bb-auto bb-auto bot added this to the v9.4.0 milestone Mar 18, 2025
sourcery-ai[bot]
sourcery-ai bot previously approved these changes Mar 18, 2025
Copy link
Contributor

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey @ArgoZhang - I've reviewed your changes - here's some feedback:

Overall Comments:

  • Consider adding a sample to showcase the new IsFixedSearch functionality.
  • The commit history could be improved by squashing the commits into a single commit with a descriptive message.
Here's what I looked at during the review
  • 🟢 General issues: all looks good
  • 🟢 Security: all looks good
  • 🟢 Testing: all looks good
  • 🟢 Complexity: all looks good
  • 🟢 Documentation: all looks good

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@codecov
Copy link

codecov bot commented Mar 18, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00%. Comparing base (3a7ffe4) to head (8955040).
Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff            @@
##              main     #5651   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          653       653           
  Lines        29393     29387    -6     
  Branches      4195      4197    +2     
=========================================
- Hits         29393     29387    -6     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@ArgoZhang ArgoZhang merged commit 9f1df2b into main Mar 18, 2025
3 checks passed
@ArgoZhang ArgoZhang deleted the feat-multi-select branch March 18, 2025 04:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(MultiSelect): redesign IsFixedSearch function

2 participants